home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / dassl / ddatrp.f < prev    next >
Text File  |  1996-07-19  |  2KB  |  65 lines

  1.       SUBROUTINE DDATRP (X, XOUT, YOUT, YPOUT, NEQ, KOLD, PHI, PSI)
  2. C***BEGIN PROLOGUE  DDATRP
  3. C***SUBSIDIARY
  4. C***PURPOSE  Interpolation routine for DDASSL.
  5. C***LIBRARY   SLATEC (DASSL)
  6. C***TYPE      DOUBLE PRECISION (SDATRP-S, DDATRP-D)
  7. C***AUTHOR  PETZOLD, LINDA R., (LLNL)
  8. C***DESCRIPTION
  9. C-----------------------------------------------------------------------
  10. C     THE METHODS IN SUBROUTINE DDASTP USE POLYNOMIALS
  11. C     TO APPROXIMATE THE SOLUTION. DDATRP APPROXIMATES THE
  12. C     SOLUTION AND ITS DERIVATIVE AT TIME XOUT BY EVALUATING
  13. C     ONE OF THESE POLYNOMIALS,AND ITS DERIVATIVE,THERE.
  14. C     INFORMATION DEFINING THIS POLYNOMIAL IS PASSED FROM
  15. C     DDASTP, SO DDATRP CANNOT BE USED ALONE.
  16. C
  17. C     THE PARAMETERS ARE:
  18. C     X     THE CURRENT TIME IN THE INTEGRATION.
  19. C     XOUT  THE TIME AT WHICH THE SOLUTION IS DESIRED
  20. C     YOUT  THE INTERPOLATED APPROXIMATION TO Y AT XOUT
  21. C           (THIS IS OUTPUT)
  22. C     YPOUT THE INTERPOLATED APPROXIMATION TO YPRIME AT XOUT
  23. C           (THIS IS OUTPUT)
  24. C     NEQ   NUMBER OF EQUATIONS
  25. C     KOLD  ORDER USED ON LAST SUCCESSFUL STEP
  26. C     PHI   ARRAY OF SCALED DIVIDED DIFFERENCES OF Y
  27. C     PSI   ARRAY OF PAST STEPSIZE HISTORY
  28. C-----------------------------------------------------------------------
  29. C***ROUTINES CALLED  (NONE)
  30. C***REVISION HISTORY  (YYMMDD)
  31. C   830315  DATE WRITTEN
  32. C   901009  Finished conversion to SLATEC 4.0 format (F.N.Fritsch)
  33. C   901019  Merged changes made by C. Ulrich with SLATEC 4.0 format.
  34. C   901026  Added explicit declarations for all variables and minor
  35. C           cosmetic changes to prologue.  (FNF)
  36. C***END PROLOGUE  DDATRP
  37. C
  38.       INTEGER  NEQ, KOLD
  39.       DOUBLE PRECISION  X, XOUT, YOUT(*), YPOUT(*), PHI(NEQ,*), PSI(*)
  40. C
  41.       INTEGER  I, J, KOLDP1
  42.       DOUBLE PRECISION  C, D, GAMMA, TEMP1
  43. C
  44. C***FIRST EXECUTABLE STATEMENT  DDATRP
  45.       KOLDP1=KOLD+1
  46.       TEMP1=XOUT-X
  47.       DO 10 I=1,NEQ
  48.          YOUT(I)=PHI(I,1)
  49. 10       YPOUT(I)=0.0D0
  50.       C=1.0D0
  51.       D=0.0D0
  52.       GAMMA=TEMP1/PSI(1)
  53.       DO 30 J=2,KOLDP1
  54.          D=D*GAMMA+C/PSI(J-1)
  55.          C=C*GAMMA
  56.          GAMMA=(TEMP1+PSI(J-1))/PSI(J)
  57.          DO 20 I=1,NEQ
  58.             YOUT(I)=YOUT(I)+C*PHI(I,J)
  59. 20          YPOUT(I)=YPOUT(I)+D*PHI(I,J)
  60. 30       CONTINUE
  61.       RETURN
  62. C
  63. C------END OF SUBROUTINE DDATRP------
  64.       END
  65.